//引入express模块
const express=require('express');
//引入数据库连接模块
const pool=require('../pool.js');
//创建路由器对象
const r=express.Router();
//添加路由
//1.用户注册接口(post /reg)
//接口地址：http://127.0.0.1:3000/v1/users/reg
//请求方式：post
r.post('/reg',(req,res,next)=>{
  //1.1获取post传递的参数  
  var obj=req.body;
  console.log(obj);
  //1.2验证手机格式是否正确，如果不正确，同时阻止往后执行
  //{code:405,msg:'手机格式错误'}
  if( !/^1[3-9]\d{9}$/.test(obj.phone) ){
    res.send({code:405,msg:'手机格式错误'});
	//阻止往后执行
	return;
  }
  //1.2执行SQL命令，将数据插入到数据库
  pool.query('insert into xz_user set?',[obj],(err,r)=>{
    if(err){
	  //抛出错误，阻止后边程序的执行，用于调试
	  //throw err;
	  //交给下一个错误处理中间件，同时把错误信息传递过去
	  next(err);
	  //阻止往后执行
      return;
	}
    console.log(r);
	//成功以后，代表插入成功，再去响应
	res.send({code:200,msg:'注册成功'});
  });
});
//2.删除用户接口(delete /编号)
//接口地址：http://127.0.0.1:3000/v1/users/6
//请求方式：delete
r.delete('/:uid',(req,res,next)=>{
  //2.1获取路由传递的参数
  var obj=req.params;
  console.log(obj);
  //2.2执行SQL命令，删除编号对应的用户   10:15
  pool.query('delete from xz_user where uid=?',[obj.uid],(err,r)=>{
    if(err){
	  //如果SQL命令中出现错误，则交给下一个错误处理中间件
	  next(err);
	  //阻止往后执行
	  return;
	}
	console.log(r);
	//结果是对象，如果对象下的affectedRows对应的值为0说明删除失败，否则删除成功
	if(r.affectedRows===0){
	  res.send({code:500,msg:'删除失败'});
	}else{
	  res.send({code:200,msg:'删除成功'});
	}
  });
});
//3.用户登录接口(post  /login)
//接口地址：http://127.0.0.1:3000/v1/users/login
//请求方式：post
r.post('/login',(req,res,next)=>{
  //3.1获取post传递的参数
  var obj=req.body;
  console.log(obj);
  //3.2判断是否为空
  if(!obj.uname){ //obj.uname===''
    res.send({code:401,msg:'uname不能为空'});
	//阻止往后执行
	return;
  }
  //3.2执行SQL命令，查询数据表中是否有用户名和密码同时匹配的数据
  pool.query('select * from xz_user where uname=? and upwd=?',[obj.uname,obj.upwd],(err,r)=>{
    if(err){
	  //交给下一个错误处理中间件
	  next(err);
	  //阻止往后执行
	  return;
	}
	console.log(r);
	//SQL命令成功后再响应
	//如果结果是空数组说明登录失败，否则成功
	if(r.length===0){
	  res.send({code:500,msg:'登录失败'});
	}else{
	  res.send({code:200,msg:'登录成功'});
	}
  }); 
});
//4.修改用户接口(put /)
//接口地址：http://127.0.0.1:3000/v1/users/
//请求方式：put
r.put('/',(req,res,next)=>{
  //4.1获取post传递的参数
  var obj=req.body;
  console.log(obj);
  //4.2执行SQL命令
  //update xz_user set email=?,phone=?,..  where uid=?
  pool.query('update xz_user set? where uid=?',[obj,obj.uid],(err,r)=>{
    if(err){
	  next(err);
	  return;
	}
	console.log(r);
	//SQL命令执行成功后再去响应
	//修改的结果是对象，如果对象下的affectedRows的值是0说明修改失败，否则成功
	if(r.affectedRows===0){
	  res.send({code:500,msg:'修改失败'});
	}else{
	  res.send({code:200,msg:'修改成功'});
	}
  });
});





//暴露出去
module.exports=r;